# Maintainer: Jaroslav Lichtblau <svetlemodry@archlinux.org>
# Maintainer: Caleb Maclennan <caleb@alerque.com>
# Contributor: Martin Wimpress <code@flexion.org>
# Contributor: Sauyon Lee <sauyonl@sauyon.com>
# Contributor: Kevin MacMartin <prurigro@gmail.com>
# Contributor: korjjj <korjjj+aur@gmail.com>

# Mocked networking tests not currently functional, last known working version
# of tests was 1.22.1
BUILDENV+=(!check)

pkgname=('syncthing' 'syncthing-relaysrv')
pkgver=1.23.4
pkgrel=1
pkgdesc='Open Source Continuous Replication / Cluster Synchronization Thing'
arch=('loong64' 'x86_64')
url="https://syncthing.net/"
license=('MPL')
depends=('glibc')
makedepends=('git' 'go')
source=(https://github.com/syncthing/syncthing/releases/download/v$pkgver/syncthing-source-v${pkgver}.tar.gz{,.asc}
        syncthing-relaysrv.sysusers
        syncthing-relaysrv.tmpfiles
        syncthing-relaysrv.service
        gcc-pie-segfaults-race.patch)
validpgpkeys=('37C84554E7E0A261E4F76E1ED26E6ED000654A3E') # Syncthing Release Management
sha256sums=('06a2882f8ac49e15faf96025b01d0edcd4cc190a419d5de98fbe8271695329fa'
            'SKIP'
            '6ab96a5949e223d315d49663734ad27b70c72469c691a61ac198cb7794cb5eaa'
            'f899998985f2d374af57f17ef6362c37a305467858195b74d1c1def71d97273f'
            '7c2fbc9608d81f8080f8a9102b867a52a050b61f426a0c182ccc1cb5815e4981'
            '6a58227c09a18fc7049ec38351a0fd98195688d15821d67d5af4facda401cbba')

prepare() {
  local _srcdir="src/github.com/syncthing"
  rm -rf "${_srcdir}"
  install -d "${_srcdir}"
  mv "${pkgbase}" "${_srcdir}/${pkgbase}"
  patch -Np1 -i gcc-pie-segfaults-race.patch
}

build() {
  export CGO_ENABLED=0
  export BUILD_HOST=archlinux
  export BUILD_USER=${pkgbase}
  export EXTRA_LDFLAGS="-linkmode external -extldflags \"${LDFLAGS}\""
  export GOPATH="${srcdir}" GOROOT_FINAL="/usr/bin"
  cd "${srcdir}/src/github.com/syncthing/${pkgbase}"
  export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"
  go run build.go -no-upgrade -version v${pkgver} build
  go run build.go -no-upgrade -version v${pkgver} build strelaysrv
}

check() {
  export GOPATH="${srcdir}" GOROOT_FINAL="/usr/bin"
  cd "${srcdir}/src/github.com/syncthing/${pkgbase}"
  if [ "${CARCH}" == "x86_64" ] ; then
    go run build.go -no-upgrade test
  fi
}

package_syncthing() {
  install=$pkgname.install

  cd "${srcdir}/src/github.com/syncthing/${pkgbase}"
  install -Dm755 ${pkgname} "${pkgdir}/usr/bin/${pkgname}"
  install -Dm644 README.md "${pkgdir}/usr/share/doc/${pkgname}/README.md"
  install -Dm644 "etc/linux-systemd/system/${pkgname}-resume.service" \
    "${pkgdir}/usr/lib/systemd/system/${pkgname}-resume.service"
  install -Dm644 "etc/linux-systemd/system/${pkgname}@.service" \
    "${pkgdir}/usr/lib/systemd/system/${pkgname}@.service"
  install -Dm644 "etc/linux-systemd/user/${pkgname}.service" \
    "${pkgdir}/usr/lib/systemd/user/${pkgname}.service"

  # license
  install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE

  # ufw preset
  install -Dm644 etc/firewall-ufw/syncthing \
    "${pkgdir}/etc/ufw/applications.d/ufw-syncthing"

  # sysctl conf
  install -Dm644 etc/linux-sysctl/30-syncthing.conf \
    "${pkgdir}/usr/lib/sysctl.d/30-syncthing.conf"

  # man pages
  cd "${srcdir}/src/github.com/syncthing/${pkgname}/man"
#   for file in $(find . -name '*.1' -print); do
#     install -Dm644 $file "${pkgdir}"/usr/share/man/man1/$file
#   done
  install -Dm644 $pkgname.1 "${pkgdir}"/usr/share/man/man1/$pkgname.1
  for file in $(find . -name '*.5' -print); do
    install -Dm644 $file "${pkgdir}"/usr/share/man/man5/$file
  done
  for file in $(find . -name '*.7' -print); do
    install -Dm644 $file "${pkgdir}"/usr/share/man/man7/$file
  done
}

package_syncthing-relaysrv() {
  pkgdesc='Relay server for Syncthing'

  cd "${srcdir}/src/github.com/syncthing/${pkgbase}"
  install -Dm755 strelaysrv "${pkgdir}"/usr/bin/${pkgname}

  install -Dm644 man/strelaysrv.1 \
    "${pkgdir}"/usr/share/man/man1/$pkgname.1

  install -Dm644 "${srcdir}"/${pkgname}.service \
    "${pkgdir}"/usr/lib/systemd/system/${pkgname}.service
  install -Dm644 "${srcdir}/${pkgname}.tmpfiles" \
    "$pkgdir/usr/lib/tmpfiles.d/${pkgname}.conf"
  install -Dm644 "${srcdir}/${pkgname}.sysusers" \
    "${pkgdir}/usr/lib/sysusers.d/${pkgname}.conf"
}
